StateDef:                                        ;================================================
  jmp Bootstrap                                  ;DBOR[hsׂ
  Fancy Text                                     ;(64byteobt@Io)
  HvH                                            ;0x00487648 (ǂȁuadd esp,0x10 > retvłBHvH킢)

Bootstrap:                                       ;================================================
  sub esp,0x18                                   ;\hA
  pusha                                          ;init     
  mov ebp,esi                                    ;
  sub ebp,0xfffffeb7                             ;ebpÍR[hɒ (esiɕ́u[StateDef ...vȂ̂ŁA70ǉȂ΂Ȃ)
VirtualProtect:                                  ;----------------------------------------
  push 0x0049f604                                ;KERNEL32擾
  call DWORD PTR [0x0049f0b8]                    ;GetModuleHandleA(KERNEL32)
  push 0xba22b126                                ;VirtualProtect𕽕ɂ͂Ȃ
  push 0xdf56aa37                                ;
  push 0xea4ea430                                ;
  push 0xce50ac13                                ;
  xor ecx,ecx                                    ;
  mov cl,0x03                                    ;
DecryptVP:                                       ;----------------------------------------
  xor DWORD PTR [esp+ecx*4],0xba22c545           ;VirtualProtect
  sub ecx,0x01                                   ;
  jnl DecryptVP                                  ;
  push esp                                       ;push "VirtualProtect"
  push eax                                       ;push KERNEL32̃nh
  call DWORD PTR [0x0049f130]                    ;GetProcAddress(KERNEL32.h, "VirtualProtect")
  add esp,0x10                                   ;xYĂ܂cɗ
  push 0x004b404a                                ;push BUFFER
  xor ecx,ecx                                    ;push 0x00000040 (RWX)
  mov cl,0x40                                    ;
  push ecx                                       ;
  lea edx,[ecx+ecx*4]                            ;push 0x000a0000 (ByteCount)
  shl edx,0x0b                                   ;
  push edx                                       ;
  push 0x00401000                                ;push 0x00401000 (winmugen.exeubN)
  mov ebx,eax                                    ;ebx͏㏑Ȃ̂
  call eax                                       ;VirtualProtect(winmugen.exe, 0x000a0000, RWX, BUFF)
  xor ecx,ecx                                    ;R[h悤
  mov cl,0x44                                    ;
DecryptCool:                                     ;----------------------------------------
  xor DWORD PTR [ebp+ecx*4-0x04],0xa281cc4c      ;[ÍL[]
  sub ecx,0x01                                   ;
  jg DecryptCool                                 ;uxor ecxAecxvƕKvȂ߂
  mov esi,ebp                                    ;movsdRsyԂ
  mov edi,0x004a0100                             ;
  mov cl,0x44                                    ;֗֗
  rep movsd                                      ;
Inject:                                          ;================================================ 
  mov edx,0x00403c3e                             ;00 09邽߂ɏKv (cł͂Ȃ)
  mov eax,0x0041a477                             ;00 09邽߂ɏKv (ł)
  mov esi,0x00472cd7                             ;00 00邽߂ɏKv
  mov DWORD PTR [edx],0x09c5bde9                 ;0x00403c3e > jmp 0x004a0200
  mov DWORD PTR [edx+0x04],0x8bc93100            ;0x00403c43 > xor ecx,ecx ;܂܂Ɍ邽߂
  mov DWORD PTR [0x004193ba],0x00086d42          ;0x004193b8 > je 0x004a0100
  mov DWORD PTR [0x0041999b],0x00086825          ;0x0041999a > call 0x004a01c4
  mov BYTE PTR [eax-0x01],0xe9                   ;0x0041a476 > jmp 0x004a0188
  mov DWORD PTR [eax],0x00085df2                 ;
  not BYTE PTR [eax]                             ;I0x0dȂ̂
  mov BYTE PTR [0x0046d583],0x74                 ;0x0046d582 > push 0x00000174
  mov BYTE PTR [0x0046d6b8],0x74                 ;0x0046d6b7 > push 0x00000174
  mov DWORD PTR [esi-0x04],0x02d47ce9            ;0x00472cd3 > jmp 0x004a0154
  mov DWORD PTR [esi],0x1b1c8d00                 ;0x00472cd8 > lea ebx,[ebx+ebx] ;܂܂Ɍ邽߂
  push 0x004b404a                                ;VirtualProtectC
  mov cl,0x20                                    ;R-Xw
  push ecx                                       ;
  lea edx,[ecx+ecx*4]                            ;
  shl edx,0x0c                                   ;
  push edx                                       ;
  push 0x00401000                                ;
  call ebx                                       ;VirtualProtect(winmugen.exe, 0x000a0000, R-X, BUFF)
RELEASE:                                         ;================================================
  popa                                           ;DBOŌ㉻
  add esp,0x04                                   ;sOɂł0x14ǉI
  mov ebx,0x0047e9b6                             ;
  cmp DWORD PTR [esp+0x14],0x7f                  ;|C^[=stA|C^[ł͂Ȃ=stX
  ja ThisIsSt                                    ;
  mov bx,0xeb31                                  ;
ThisIsSt:                                        ;----------------------------------------
  push ebx                                       ;K؂
  mov ebx,0xfffffff7                             ;́cuStateDef -9v!! !! (S̈׊gĂ΁AꂼDef -9ƂĒ`)
  ret                                            ;ʏ폈ɖ߂낤I
  
==================================================================================================
AngleHooks

R[h͂
83 BE 98 00 00 00 00 0F 84 42 93 F7 FF 8B 4E 68 8B 54 24 14 8B 44 24 18 51 D9 44 24 34 52 50 FF B6 98 00 00 00 E8 82 21 FF FF D9 44 24 20 50 E8 78 21 FF FF 8B 8E 80 00 00 00 50 51 E8 7F 38 F6 FF 83 C4 1C E9 37 93 F7 FF 90 90 90 61 6E 67 6C 65 00 90 90 68 FF 7F FF FF 8D 56 0C C1 E8 08 75 06 81 C2 5C 01 00 00 53 52 68 4C 01 4A 00 57 E8 6C D5 FD FF 83 C4 14 85 C0 0F 95 C0 0F B6 C0 5F 5E 5D 5B 83 C4 08 C3 90 8D 4B 0C 81 79 08 FF 7F FF FF 74 29 83 79 0C 02 72 13 F6 41 0C 03 75 1D 66 83 79 12 10 72 16 83 79 14 7F 77 10 51 57 E8 1C 75 F6 FF D9 9E 98 00 00 00 83 C4 08 5F 5E 5D 5B 59 C3 90 8B 84 24 90 00 00 00 8B 08 03 4C 24 7C 8B 51 68 80 E2 01 D1 E2 83 EA 01 89 54 24 14 DB 44 24 14 D8 89 98 00 00 00 D9 5C 24 14 E9 6D 29 FB FF 90 90 90 90 90 90 90 90 90 90 90 90 00 8B 4C 24 18 89 4C 24 48 E9 38 3A F6 FF 90 90 90
Rsŷ߂
0x83BE9800, 0x0000000F, 0x844293F7, 0xFF8B4E68, 0x8B542414, 0x8B442418, 0x51D94424, 0x345250FF, 0xB6980000, 0x00E88221, 0xFFFFD944, 0x242050E8, 0x7821FFFF, 0x8B8E8000, 0x00005051, 0xE87F38F6, 0xFF83C41C, 0xE93793F7, 0xFF909090, 0x616E676C, 0x65009090, 0x68FF7FFF, 0xFF8D560C, 0x85C07506, 0x81C25C01, 0x00005352, 0x684C014A, 0x0057E86D, 0xD5FDFF83, 0xC41485C0, 0x0F95C00F, 0xB6C05F5E, 0x5D5B83C4, 0x08C39090, 0x8D4B0C81, 0x7908FF7F, 0xFFFF7429, 0x83790C02, 0x7213F641, 0x0C03751D, 0x66837912, 0x10721683, 0x79147F77, 0x105157E8, 0x1C75F6FF, 0xD99E9800, 0x000083C4, 0x085F5E5D, 0x5B59C390, 0x8B842490, 0x0000008B, 0x08034C24, 0x7C8B5168, 0x80E201D1, 0xE283EA01, 0x89542414, 0xDB442414, 0xD8899800, 0x0000D95C, 0x2414E96D, 0x29FBFF90, 0x90909090, 0x90909090, 0x90909000, 0x8B4C2418, 0x894C2448, 0xE9383AF6, 0xFF909090

ÍR[h͂
CF 72 19 A2 4C CC 81 AD C8 8E 12 55 B3 47 CF CA C7 98 A5 B6 C7 88 A5 BA 1D 15 C5 86 78 9E D1 5D FA 54 81 A2 4C 24 03 83 B3 33 58 E6 68 EC D1 4A 34 ED 7E 5D C7 42 01 A2 4C CC D1 F3 A4 B3 B9 54 B3 4F 45 BE A5 FB 12 55 B3 5C 11 32 2D A2 E6 CE 29 CC 11 32 24 33 FE 5D B3 41 D7 AE 8D 24 89 D7 4A 4D 43 FE 4D CC 81 F1 1E A4 CD A3 06 CC D6 4A 20 19 7C 5D CF 08 95 27 8C C3 14 62 43 7A 41 FD 12 91 DA 21 88 C4 42 32 C1 87 8D 23 35 C4 7E DD B3 33 F5 8B CF B5 8D A0 3E DF 77 E3 40 CF F4 BF 2A 4F F8 B0 5C BE 97 21 35 D8 FE D5 5C 9D D6 4A 50 B9 77 5D 95 52 19 A2 4C CC 02 66 44 93 DF FF 17 95 42 32 C7 48 A5 32 4C CC 81 29 44 CF CD 86 30 47 D0 CA CC 2E 80 73 AE 4F 6B A3 C5 98 A5 B6 97 88 A5 B6 94 45 19 A2 4C CC 58 FE 68 D8 68 CF 65 37 7E 32 DC 5C 11 32 DC 5C 11 32 DC 5C 11 00 C7 80 A5 BA C5 80 A5 EA A5 F4 BB 54 B3 5C 11 32

ꏊƌʂ͏L̂Ƃ
ÍL[ = 0xa281cc4c (Ƀ: 0x4ccc81a2g)

@ AngleExplod (0x004a0100)
  cmp DWORD PTR [esi+0x00000098],0x00            ;px=0̏ꍇɕʏ
  jz 0x0041944F                                  ;
  mov ecx,DWORD PTR [esi+0x68]                   ;facingtO擾
  mov edx,DWORD PTR [esp+0x14]                   ;yScale擾
  mov eax,DWORD PTR [esp+0x18]                   ;xScale擾
  push ecx                                       ;push facingtO
  fld DWORD PTR [esp+0x34]                       ;yPos擾
  push edx                                       ;push yScale
  push eax                                       ;push xScale
  push DWORD PTR [esi+0x00000098]                ;push px
  call 0x004922ac                                ;yPos؂̂Ă
  fld DWORD PTR [esp+0x20]                       ;xPos擾
  push eax                                       ;push yPos
  call 0x004922ac                                ;xPos؂̂Ă
  mov ecx,[esi+0x00000080]                       ;Anim擾
  push eax                                       ;push xPos
  push ecx                                       ;push Anim
  call 0x004039C0                                ;call AngleRender(Anim, xPos, yPos, px, xScale, yScale, facingtO)
  add esp,0x1C                                   ;X^bNC
  jmp 0x00419480                                 ;Explod_O߂
BYTES: 83 BE 98 00 00 00 00 0F 84 42 93 F7 FF 8B 4E 68 8B 54 24 14 8B 44 24 18 51 D9 44 24 34 52 50 FF B6 98 00 00 00 E8 82 21 FF FF D9 44 24 20 50 E8 78 21 FF FF 8B 8E 80 00 00 00 50 51 E8 7F 38 F6 FF 83 C4 1C E9 37 93 F7 FF

@ ReadAngle (0x004a0154)
  push 0xffff7fff                                ;int NO_CHANGE = -32769
  lea edx,[esi+0x0c]                             ;px͂ɕۑc transǂݍ܂ꂽ
  shr eax,0x08                                   ;|C^[HȂ΂x
  jnz SkipTrueAdjust                             ;
  add edx,0x0000015c                             ;
SkipTrueAdjust:                                  ;----------------------------------------
  push ebx                                       ;push L
  push edx                                       ;push ꏊ
  push 0x004a014c                                ;push "angle"
  push edi                                       ;push CNSt@C
  call 0x0047d6e0                                ;call ExpressionReader(CNSt@C, "angle", ꏊ, L, -32769)
  add esp,0x14                                   ;X^bNC
  test eax,eax                                   ;G[H
  setne al                                       ;Ȃ1A0
  movzx eax,al                                   ;
  pop edi                                        ;CĖ߂
  pop esi                                        ;
  pop ebp                                        ;
  pop ebx                                        ;
  add esp,0x08                                   ;
  ret                                            ;
BYTES: 68 FF 7F FF FF 8D 56 0C C1 E8 08 75 06 81 C2 5C 01 00 00 53 52 68 4C 01 4A 00 57 E8 6C D5 FD FF 83 C4 14 85 C0 0F 95 C0 0F B6 C0 5F 5E 5D 5B 83 C4 08 C3

@ WriteAngle (0x004a0188)
  lea ecx,[ebx+0x0c]                             ;pxɒ
  cmp DWORD PTR [ecx+0x08],0xffff7fff            ;NO_CHANGȄꍇXLbv
  je SkipWrite                                   ;
  cmp DWORD PTR [ecx+0x0c],0x02                  ;intHfloatHNULH
  jb WriteOK                                     ;
  test BYTE PTR [ecx+0x0c],0x03                  ;1ԖڃAhAXLbv
  jnz SkipWrite                                  ;
  cmp WORD PTR [ecx+0x12],0x10                   ;2ԖڃAhAXLbv
  jb SkipWrite                                   ;
  cmp DWORD PTR [ecx+0x14],0x7f                  ;N\fJIycłɗȂˁHXLbv
  ja SkipWrite                                   ;
WriteOK:                                         ;----------------------------------------
  push ecx                                       ;push ꏊ
  push edi                                       ;push LAhX
  call 0x004076d0                                ;call FloatParser(LAhX, ꏊ)
  fstp DWORD PTR [esi+0x00000098]                ;ExplodpxύX
  add esp,0x08                                   ;X^bNC
SkipWrite:                                       ;----------------------------------------
  pop edi                                        ;CĖ߂
  pop esi                                        ;
  pop ebp                                        ;
  pop ebx                                        ;
  pop ecx                                        ;
  ret                                            ;
BYTES: 8D 4B 0C 81 79 08 FF 7F FF FF 74 29 83 79 0C 02 72 13 F6 41 0C 03 75 1D 66 83 79 12 10 72 16 83 79 14 7F 77 10 51 57 E8 1C 75 F6 FF D9 9E 98 00 00 00 83 C4 08 5F 5E 5D 5B 59 C3

@ AngleExplodShadow (0x004a01c4)
  mov eax,DWORD PTR [esp+0x00000090]             ;ExplodĎ擾 (ExplodȒPȕ@͂Ȃ)
  mov ecx,DWORD PTR [eax]                        ;
  add ecx,DWORD PTR [esp+0x7c]                   ;ExplodItZbg
  mov edx,DWORD PTR [ecx+0x68]                   ;facingtO擾
  and dl,0x01                                    ;mF
  shl edx                                        ;0(facing=1)̏ꍇɔ]āB1(facing=-1)̏ꍇɔ]Ȃ
  sub edx,0x01                                   ;
  mov DWORD PTR [esp+0x14],edx                   ;fild̂߂ɃX^bNɕۑ
  fild DWORD PTR [esp+0x14]                      ;
  fmul DWORD PTR [ecx+0x00000098]                ;ExplodpxƊ|
  fstp DWORD PTR [esp+0x14]                      ;X^bNɕۑBLpx
  jmp 0x00452b60                                 ;VShadowRenderɓn
BYTES: 8B 84 24 90 00 00 00 8B 08 03 4C 24 7C 8B 51 68 80 E2 01 D1 E2 83 EA 01 89 54 24 14 DB 44 24 14 D8 89 98 00 00 00 D9 5C 24 14 E9 6D 29 FB FF

@ AngleTransPatch (0x004a01e8)
  mov ecx,DWORD PTR [esp+0x18]                   ;trans㏑ł͂Ȃۑ擾
  mov DWORD PTR [esp+0x48],ecx                   ;̓͐^p
  jmp 0x00403c45                                 ;߂
BYTES: 8B 4C 24 18 89 4C 24 48 E9 38 3A F6 FF